/*
*	Эта переменная говорит о том, что файл загружен браузером.
*/
var progressLoaded = true;
/*
*	Функция проверяет,все ли .js файлы загружены
*/
var ProgressNotes = "";
var ProgressInfo = {
	name: "Прогресс Гарант",
	price: 0,
	discountPrice: 0,
	notesToDisplay: new Array(0),
	//в данный момент выводит франшизу в ячейке "Примечания"
	notesSpecial: '',
	notes: "",
	rating: 0,
	//кол-во звездочек в ячейке Рейтинг
	realFr: 0,
	//реальные размер франшизы для данной фирмы
	frArray: new Array(0),
	// массив с координатами возможных значений франшизы (Для слайдера франшизы)
	countSpecialNotes: 0,
	calc: function () {
		calculateProgress();
	}
};
var ProgressXML = false;
//	Функция расчета стоимости КАСКО фирмы Прогресс Гарант

function calculateProgress() {
	var kCountDrivers;
	if (!ProgressXML) $.ajax({
		url: "progress/Progress_cars.xml?" + rand % 1000,
		success: function (response) {
			ProgressXML = response;
			calcProgress(ProgressXML);
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			calculateProgress()
		}
	});
	else
	calcProgress(ProgressXML);
}

function calcProgress(response) {
	ProgressInfo.countSpecialNotes = 0;
	//	Группа ТС,  значение коеффициента для данной группы
	var group, kGroup;

	//	Коэффициент, зависящий от  Противоугонной Системы машины
	var alarm;
	//	Коэффициент для текущего размера франшизы
	var fr;
	//	Коэффициент для выбранной Станции Технического обслуживания
	var stoa;
	//	Cкидка для данной фирмы при заказе с сайта
	var discount;
	//	Коэффициент рассрочки оплаты
	var oplata;
	//	Коэффициент, зависящий от возраста ТС
	var kCarAge;
	//	Коэффициент для Мультидрайв
	ProgressInfo.notesSpecial = '';
	ProgressInfo.notesToDisplay = new Array(0);
	ProgressUnableToCalculate = false;

	//	Получаем XML с Машинами
	xmlCars = $(response);
	var xmlK = xmlCars.find("Ki:first");
	xmlCars.find("carList:first");
	var car;

	//	Выбираем машину. Если машина не найдена, ищем параметры для неизвестных ТС	
	var manufacturer = xmlCars.find("m>n").filter(function () {
		return $(this).text().toUpperCase() == manufacturerName.toUpperCase()
	});
	car = manufacturer.parent().find("c>n").filter(function () {
		return $(this).text().toUpperCase() == carName.toUpperCase()
	}).parent();
	if (car.length == 0) car = manufacturer.parent().find("c>n").filter(function () {
		return $(this).text() == "*"
	}).parent();
	if (car.length == 0) {
		car = xmlCars.find("m>n").filter(function () {
			return $(this).text() == "*"
		}).parent().find("c>n").filter(function () {
			return $(this).text() == "*"
		}).parent();
	}

	//	Находим группу ТС и категорию по Сигнализации	
	group = parseInt(car.find("g").eq(0).text());
	alarm = parseInt(car.find("a").eq(0).text());

	if (!rus) kGroup = parseFloat(xmlK.find("carGroup>ext>g" + group).text()) * parseFloat(xmlK.find("baseTariff>ext").text()) / 100;
	else
	kGroup = parseFloat(xmlK.find("carGroup>rus>g" + group).text()) * parseFloat(xmlK.find("baseTariff>rus").text()) / 100;


	//	Находим коэффициент франшизы, реальный размер франшизы для данной фирмы
	var selFr = !rus ? selectedFr : selectedFr > 14000 ? 14000 : selectedFr;
	fr = xmlK.find("fr>case>price").filter(function () {
		return parseFloat($(this).text()) >= parseInt(price)
	}).eq(0).parent();
	if (fr.length == 0) fr = xmlK.find("fr>case>price").filter(function () {
		return $(this).text() == '*'
	}).eq(0).parent();
	fr = fr.find("case>price").filter(function () {
		return parseInt($(this).text()) <= parseInt(selectedFr)
	});
	if (fr.length > 0) {
		fr = fr.eq(fr.length - 1).parent();
		ProgressInfo.realFr = parseInt(fr.find("price").text());
		fr = parseFloat(fr.find("discount").text());

	} else {
		ProgressInfo.realFr = 0;
		fr = 1;
	}
	var kNew = 1;
	if (!rus) kNew = 0.9;

	//	Находим водителя с максимальным значением коэффициента "возраст/стаж вождения"
	var kAgeExp;
	var kAgeExpMin = 0;
	var drAId, drEid;
	var drA, drE;
	if (!multiDrive) {
		for (var i = 0; i < driversListForCalc.length; i++) {
			drA = parseInt(driversListForCalc.eq(i).find('.f-driver-c2').eq(0).find('input').eq(0).val());
			drE = parseInt(driversListForCalc.eq(i).find('.f-driver-c2').eq(0).find('input').eq(1).val());
			if (parseInt(drA) <= 21) drAId = 'less22';
			else if (parseInt(drA) <= 26) drAId = 'less27';
			else if (parseInt(drA) <= 34) drAId = 'less35';
			else if (parseInt(drA) >= 45 && parseInt(price) > 1500000 && drE > 9) drAId = 'more45';
			else drAId = 'more35';

			if (parseInt(drE) < 2) drEid = 'less2';
			else if (parseInt(drE) < 4) drEid = 'less4';
			else if (parseInt(drE) < 10) drEid = 'less10';
			else
			drEid = 'more9';
			if (parseFloat(xmlK.find('ageExp>' + (rus ? 'rus>' : 'ext>') + drAId + '>' + drEid).text()) > kAgeExpMin) kAgeExpMin = parseFloat(xmlK.find('ageExp>' + (rus ? 'rus>' : 'ext>') + drAId + '>' + drEid).text());
		}
		kAgeExp = kAgeExpMin;
	} else if ($('#corporatePerson').eq(0).attr('checked')) kAgeExp = 1;
	else kAgeExp = parseFloat(xmlK.find('countDrivers>case2').text());

	//	Находим коэффициент, зависящий от выбранного способа возмещения убытка, а также пишем комметарии комментарии, в случае невозможности выбора данного варианта
	stoa = $('#f-2').find('input:checked').filter("[name='sto']").val();
	switch (stoa) {
	case '0':
		stoa = 1;
		break;
	case '1':
		stoa = 1;
		break;
	case '3':
		stoa = rus ? 1.3 : 1.15;
		break;
	case '4':
		stoa = rus ? 1.3 : 1;
		break;
	}

	//	Коэффициент для праворульных ТС
	var k_right_helm = $('#rightHelm').attr('checked');
	if (k_right_helm) k_right_helm = parseFloat(xmlK.find('rightHelm').eq(0).text());
	else k_right_helm = 1;


	//	Скидочный коэффициент в случае, если установленна Спутниковая ПС
	alarm = 1;

	//	Коэффициент оплаты в рассрочку
	var oplata = $('#f-2').find('input:checked').filter("[name='oplata']").val();
	switch (oplata) {
	case '0':
		oplata = 1;
		break;
	case '1':
		oplata = rus ? 1.05 : 1.07;
		break;
	case '2':
		oplata = rus ? 1.05 : 1.07;
		ProgressUnableToCalculate = true;
		ProgressInfo.notesSpecial += 'Возможна рассрочка только в 2 платежа<br>';
		ProgressInfo.countSpecialNotes++;
		break;
	case '3':
		oplata = rus ? 1.05 : 1.07;
		ProgressUnableToCalculate = true;
		ProgressInfo.notesSpecial += 'Возможна рассрочка только в 2 платежа<br>';
		ProgressInfo.countSpecialNotes++;
		break;
	}
	//	Перерасчет точек на слайдере франшизы, если перед последним расчетом изменился максимальный размер франшизы
	if (priceChanged) {
		ProgressInfo.frArray = new Array(0);
		var frArray = xmlK.find("fr>case>price").filter(function () {
			return parseFloat($(this).text()) > parseInt(price)
		});
		frArray = frArray.eq(0).parent().find("case>price").filter(function () {
			return parseInt($(this).text()) < slider2.maxVal
		});

		for (var i = 0; i < frArray.length; i++) {
			var frImg = {
				value: null,
				image: null
			}
			if ((parseInt(price) / 100 * i) <= (slider2.maxVal + 1)) {
				frImg.value = parseFloat(frArray.eq(i).text());
				frImg.image = $("<img src='red.png' title='Франшиза " + addSpaces(frImg.value.toString()) + " руб. для фирмы Прогресс Гарант'>");
				ProgressInfo.frArray.push(frImg);
			}
		}

		for (var i = 0; i < ProgressInfo.frArray.length; i++) {
			var fromLeft = parseInt(ProgressInfo.frArray[i].value / slider2.maxVal * slider2.width);
			var tmp = ProgressInfo.frArray[i].image;
			tmp.css("position", "absolute").css("left", fromLeft + "px");
			tmp.css("top", "0px");
			try {
				tmp.click(function () {
					$(this).parent().click();
				}).focus(function () {
					$(this).blur()
				}).appendTo($("#barsliderDiv1").eq(0));
			} catch (e) {
				alert(e.description);
			};
		}

	}

/*
alert(kGroup);
alert(kCarAge);
alert(kCountDrivers);
alert(kAgeExp);
alert(stoa);
alert(k_right_helm);
alert(alarm);
*/

	//	Вычисляем итоговую стоимость страхования и сохраняем все параметры
	ProgressInfo.notesSpecial = 'Особенности расчета страховой компании Прогресс Гарант:<br>' + ProgressInfo.notesSpecial;
	ProgressInfo.notesSpecial += "Размер франшизы " + addSpaces(ProgressInfo.realFr.toString()) + " руб.";
	ProgressInfo.notesToDisplay.push("<span style='margin:0px; padding:0px; margin-left:24px;; position:relative; top:5px;'>Франшиза: " + addSpaces(ProgressInfo.realFr.toString()) + " руб.</span><br>");
	ProgressInfo.price = parseInt(price) * kGroup * fr * kAgeExp * stoa * k_right_helm;
/*
alert(
'pr='+price+'\n'+
'kGroup='+kGroup+'\n'+
'fr='+fr+'\n'+
'kAgeExp='+kAgeExp+'\n'+
'stoa='+stoa+'\n'+
'k_right_helm='+k_right_helm+'\n'
);
*/

	if (isNaN(ProgressInfo.price) || ProgressInfo.price == 0) ProgressInfo.price = parseInt(price) * 0.08;
	var discount = (100 - parseFloat($('#sk8').text())) / 100;
	ProgressInfo.discountPrice = parseInt(ProgressInfo.price * discount);
	ProgressInfo.rating = 3;
	ProgressInfo.notes = ProgressNotes;
	if (parseInt(carAge.replace('carAge', '')) > 0 || $('#mscTown').attr('checked')) ProgressInfo.price = ProgressInfo.discountPrice = 0;
	counterCasco();
}